﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using com.clinica.business.BE.actcliente;
using LiclEstadistica.Views;
using LiclEstadistica;
using LiclUtil;

namespace wesiGestClinica.estadistica.popups
{
    public partial class FormsConBuscarCliente : System.Web.UI.Page
    {
        LiclCiaSegurosController oController = new LiclCiaSegurosController();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                try
                {
                    TipoBus = 1;
                    IniciarControles();
                    lbl_TituloModulo.Text = "Búsqueda de Cliente";
                    if (TipoBus == 2 && txt_NroDocumento.Text.Trim() != string.Empty)
                        btn_Buscar_Click(null, null);
                }
                catch (Exception ex)
                {

                }
            }
            UCBarra1.img_Volver.Visible = true;
            UCBarra1.img_Volver.Click += new ImageClickEventHandler(img_Volver_Click);
            dgPaciente.RowCommand += new GridViewCommandEventHandler(dgPaciente_RowCommand);
            lblMensaje.Visible = false;
            lblMensaje.Text = string.Empty;

        }

        void img_Volver_Click(object sender, ImageClickEventArgs e)
        {
            
        }

        #region Eventos
        void dgPaciente_RowCommand(object sender, GridViewCommandEventArgs e)
        {

            if (e.CommandName == "Seleccionar")
            {
                GridViewRow fila = (GridViewRow)((ImageButton)e.CommandSource).NamingContainer;
                dgPaciente.SelectedIndex = fila.RowIndex;
                string[] arr = e.CommandArgument.ToString().Split(new char[] { '|' });
                ScriptManager.RegisterStartupScript(this, typeof(Page), "Envio", "enviarParam('" + arr[0] + "','" + arr[1] + "');", true);
            }
        }
        protected void btn_Buscar_Click(object sender, EventArgs e)
        {
            ClienteBE oClie = new ClienteBE();
            dgPacienteControl.DataSource = new List<ClienteBE>();
            dgPacienteControl.DataBind();
            int Tipo = 0;
            string Nombre = string.Empty;

            if (rbu_PorNombre.Checked)
            {
                if (txt_ApellidoPaterno.Text.Trim() != string.Empty || txt_Apellidomaterno.Text.Trim() != string.Empty || txt_Nombre.Text.Trim() != string.Empty)
                {
                    Tipo = 1;
                    Nombre = txt_Apellidomaterno.Text.Trim() + " " + txt_ApellidoPaterno.Text.Trim() + " " + txt_Nombre.Text.Trim();
//                    BuscarCliente(Tipo, Nombre);
                    if (ValidarCarateres(Nombre, 0))
                        BuscarCliente(Tipo, Nombre);
                    else
                    {
                        lblMensaje.Visible = true;
                        lblMensaje.Text = " Datos ingresados contienen caractares invalidos.";
                    }

                }
                else
                {
                    lblMensaje.Visible = true;
                    lblMensaje.Text = " Debe ingresar al menos nombre o apellidos.";
                }
            }
            else
            {
                if (txt_NroDocumento.Text.Trim() != string.Empty)
                {
                    Tipo = 2;
                    Nombre = txt_NroDocumento.Text.Trim();
                    if (ValidarCarateres(Nombre, 0))
                        BuscarCliente(Tipo, Nombre);
                    else
                    {
                        lblMensaje.Visible = true;
                        lblMensaje.Text = " Datos ingresados contienen caractares invalidos.";
                    }

                }
                else
                {
                    lblMensaje.Visible = true;
                    lblMensaje.Text = " Debe ingresar Razon Social.";
                }
            }


        }
        protected void rbu_PorNombre_CheckedChanged(object sender, EventArgs e)
        {
            txt_NroDocumento.ReadOnly = true;
            txt_Apellidomaterno.ReadOnly = false;
            txt_ApellidoPaterno.ReadOnly = false;
            txt_Apellidomaterno.ReadOnly = false;
            txt_Nombre.ReadOnly = false;
            rbu_PorNroDocumento.Checked = false;
            txt_NroDocumento.Text = string.Empty;
            txt_Nombre.Focus();
        }

        protected void rbu_PorNroDocumento_CheckedChanged(object sender, EventArgs e)
        {
            txt_NroDocumento.ReadOnly = false;
            txt_Apellidomaterno.ReadOnly = true;
            txt_ApellidoPaterno.ReadOnly = true;
            txt_Apellidomaterno.ReadOnly = true;
            txt_Nombre.ReadOnly = true;
            rbu_PorNombre.Checked = false;
            txt_Nombre.Text = string.Empty;
            txt_Apellido_Materno.Text = string.Empty;
            txt_Apellido_Paterno.Text = string.Empty;
            txt_NroDocumento.Focus();
        }
        #endregion
        #region Metodos
        public void IniciarControles()
        {
            txt_Apellidomaterno.Text = string.Empty;
            txt_ApellidoPaterno.Text = string.Empty;
            txt_Nombre.Text = string.Empty;
            if (TipoBus == 2)
            {
                rbu_PorNroDocumento.Checked = true;
                rbu_PorNroDocumento_CheckedChanged(null, null);
            }
            else
            {
                rbu_PorNombre.Checked = true;
                rbu_PorNombre_CheckedChanged(null, null);
            }
            ClienteBE obj = new ClienteBE();
            List<ClienteBE> lstPaciente = new List<ClienteBE>();
            lstPaciente.Add(obj);
            dgPacienteControl.DataSource = lstPaciente;
            dgPacienteControl.DataBind();
        }

        private bool ValidarCarateres(string texto, int tipo)
        {
            bool res = true;
            string validar = string.Empty;
            string cadena = string.Empty;
            string carEspecial = string.Empty;
            if (texto.Trim() != string.Empty)
            {
                switch (tipo)
                {
                    case 0://Alfanumericos no caracteres especiales
                        cadena = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ-0123456789. ";
                        break;
                    case 1://Solo numeros
                        cadena = "-0123456789";
                        break;
                    case 2://Solo Letras
                        cadena = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ ";
                        break;
                    case 3://Solo numeros y decimales
                        cadena = "-0123456789.";
                        break;
                    default:
                        break;
                }
                #region Validacion
                for (int i = 0; i < texto.Length; i++)
                {
                    validar = texto.Substring(i, 1);
                    if (cadena.IndexOf(validar.Trim()) == -1)
                    {
                        res = false;
                        break;
                    }
                }
                #endregion
            }
            else
                res = true;

            return res;
        }



        public void BuscarCliente(int tipo, string Nombre)
        {
            List<ClienteBE> lstPaciente = new List<ClienteBE>();
            lstPaciente = oController.Obtener_Cliente(tipo, Nombre);
            if (lstPaciente.Count > 0)
            {
                dgPacienteControl.DataSource = lstPaciente;
                dgPacienteControl.DataBind();
                lbl_Cantidad.Text = lstPaciente.Count.ToString() + " Registros(s) encontrados";
            }
            else
            {
                lblMensaje.Visible = true;
                lblMensaje.Text = lblMensaje.Text + " No se ha encontrado pacientes para el criterio de busqueda.";
                lbl_Cantidad.Text = "0 Registros(s) encontrados";
            }
        }
        #endregion
        #region Propiedades
        public int TipoBus { get; set; }

        public TextBox txt_Apellido_Paterno
        {
            get { return txt_ApellidoPaterno; }
            set { txt_ApellidoPaterno = value; }
        }
        public TextBox txt_Apellido_Materno
        {
            get { return txt_Apellidomaterno; }
            set { txt_Apellidomaterno = value; }
        }
        public TextBox txt_Nombre_Paciente
        {
            get { return txt_Nombre; }
            set { txt_Nombre = value; }
        }
        public TextBox txt_Numero_Documento
        {
            get { return txt_NroDocumento; }
            set { txt_NroDocumento = value; }
        }
        public Button btn_Buscar_Paciente
        {
            get { return btn_Buscar; }
            set { btn_Buscar = value; }
        }
        public RadioButton rbu_PorNombre_Paciente
        {
            get { return rbu_PorNombre; }
            set { rbu_PorNombre = value; }
        }
        public RadioButton rbu_PorNroDoc_Paciente
        {
            get { return rbu_PorNroDocumento; }
            set { rbu_PorNroDocumento = value; }
        }
        public GridView dgPaciente
        {
            get { return dgPacienteControl; }
            set { dgPacienteControl = value; }
        }
        public HiddenField hdfNombre
        {
            get { return hdfNombreCompletoControl; }
            set { hdfNombreCompletoControl = value; }
        }
        public HiddenField hdfDocumento
        {
            get { return hdfDocumentoControl; }
            set { hdfDocumentoControl = value; }
        }
        #endregion
    }
}
